1552G - A Serious Referee - CodeForces Solution


bitmasks brute force dfs and similar sortings *3000

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,k,d[14];
ll MSK,msk[14],s[14][44],all;
vector<int>vec;
void dfs(int p,ll m){
	if(p==k){
		int tmp=__builtin_popcountll(m);
		if((1ll<<tmp)-1!=m)puts("REJECTED"),exit(0);
		return;
	}
	int v=__builtin_popcountll(m&msk[p]);m^=(m&msk[p]);
	for(int i=0;i<=d[p];i++)vec.push_back(i),dfs(p+1,m|s[p][v+i]),vec.pop_back();
}
int main(){
	scanf("%d%d",&n,&k);
	if(n==1)return puts("ACCEPTED"),0;
	for(int i=0;i<k;i++){
		int m;scanf("%d",&m);
		for(int j=0,x;j<m;j++){
			scanf("%d",&x),x--;
			msk[i]|=1ll<<x,s[i][j+1]=msk[i];
		}
		d[i]=__builtin_popcountll(msk[i]^(MSK&msk[i])),MSK|=msk[i];
	}
	if(MSK!=(1ll<<n)-1)return puts("REJECTED"),0;
	dfs(0,0),puts("ACCEPTED");
}


Comments

Submit
0 Comments
More Questions

545B - Equidistant String
1244C - The Football Season
1696B - NIT Destroys the Universe
1674A - Number Transformation
1244E - Minimizing Difference
1688A - Cirno's Perfect Bitmasks Classroom
219A - k-String
952A - Quirky Quantifiers
451B - Sort the Array
1505H - L BREAK into program
171E - MYSTERIOUS LANGUAGE
630D - Hexagons
1690D - Black and White Stripe
1688D - The Enchanted Forest
1674C - Infinite Replacement
712A - Memory and Crow
1676C - Most Similar Words
1681A - Game with Cards
151C - Win or Freeze
1585A - Life of a Flower
1662A - Organizing SWERC
466C - Number of Ways
1146A - Love "A"
1618D - Array and Operations
1255A - Changing Volume
1710C - XOR Triangle
415C - Mashmokh and Numbers
8A - Train and Peter
591A - Wizards' Duel
1703G - Good Key Bad Key